<?php
namespace app\admin\model;
use think\Model;
use think\facade\Config;
use think\facade\Cache;
class AdminRules extends Model
{
	// 写入模型名称 可以是当前或者别的
	protected $name='AdminRules';
	// 设置主键
	protected $pk = 'id';

	// 设置对应字段
	protected $field = [ 'id','pid','level','name','title','type','status','sort','condition','note' ];

	// 类型转换 进入数据库时候的类型转换
	protected $type=[
		'id' => 'interger', 'pid' => 'interger', 'level' => 'interger',
		'name' => 'string', 'title' => 'string', 'type' => 'interger',
		'status' => 'interger', 'sort' => 'interger', 'condition' => 'interger',
		'note' => 'string',
	];

	// 设置新增插入时的默认值，既没有这些数据被输入时候，以下内容依然会被执行
	protected $insert = 
	[
		// 字段设置pid默认情况
		'pid' => 0,
		// 设置字段等级摸清情况
		'level' => 1,
		// 设置状态默认情况 1 开启规则 0禁用操作 3软删除规则
		'status' => 1, 
		// 规则排序字段 默认50
		'sort' => 50,
		// 附加规则 不知道干嘛用 默认数字1 
		'condition'=>1,
		// 对规则进行描述
		'note' =>'对该权限暂未说明',
	];

	//当更新时 那些字段默认直接更新
    protected $update = [ ];

	// 写入后不可更改的数据
	protected $readonly = ['id', 'pid'];

	/**
	 * initialize 初始化权限组模型方法
	 */
	protected function initialize()
	{
		// 初始化父类模型信息
		parent::initialize();
	}

	/**
	 * getField 单条数据字段内容获取
	 * @param  int $select    传入查询条件字段
	 * @param  int $info    需要查询的内容
	 * @param  string $field需要查询的字段名
	 * @return null        没有数据时返回null
	 * @return string      返回目标字段信息
	 */
	public function getField($select,$info,$field)
	{	
		// 获取表的字段内某信息
		$data = $this->comment('查询'.$select.'字段内容')->where('status','neq',3)
			->where($select,'=',$info)->field($field)->find();
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

    /**
     * rulesSelect select下拉选框需要用到的数据
     * @return array 	返回数组
     * @return null 	返回空
     */
	public function rulesSelect()
	{
		// 获取下拉列表信息
		$data = $this->comment('下拉列表查询内容')->where('status','neq',3)->field('level,id,pid,title')->select()->toArray();
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

	/**
	 * rulesTree 前台list界面使用的数据展示
	 * @return array 	返回数组
     * @return null 	返回空
	 */
	public function rulesList()
	{
		// 所有规则内容读取
		$data = $this->comment('查询规则列表数据内容')->where('status','neq',3)->order('sort desc')->paginate(5);
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

	/**
	 * rulesGet 获取详情信息
	 * @param  int $id 权限组id
	 * @return null 为空时返回
	 * @return array 返回数据信息
	 */
	public function rulesGet($id)
	{
		// 获取单条数据记录
		$data = $this->comment('查询id为'.$id.'的数据内容')->where('id','eq',$id)
		->select()->toArray();
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

	/**
	 * rulesEdit 权限编辑操作
	 * @param  int $id 权限id
	 * @param  array $data 权限数据
	 * @return bool    返回操作是否成功
	 */
	public function rulesEdit($id,$data)
	{
		try
		{
			// 进行数据操作
			$res = $this->comment('id为'.$id.'的权限编辑操作')->where('id','eq',$id)->update($data);
			// 返回结果判断
			return true;
		}
		catch (\Exception $e)
		{
			// 抛出错误异常
			throw new Exception($e->getMessage());
			// 返回结果判断
			return false;
		}
	}

	/**
	 * rulesDel 删除规则
	 * @param  int $id 传入数据id
	 * @return bool    返回结果信息正确或者错误
	 */
	public function rulesDel($id)
	{
		try
		{
			// 进行数据操作
			$res = $this->comment('id为'.$id.'的权限删除操作')->where('id','eq',$id)->update(['status'=>3]);
			// 返回结果判断
			return true;
		}
		catch (\Exception $e)
		{
			// 抛出错误信息
			throw new Exception($e->getMessage());
			// 返回结果判断
			return false;
		}
	}
}
